A number of different techniques are known for generating services in information processing systems. For example, in some systems, storage arrays function as both data sources and data targets, and services in this context illustratively include moving, copying, synchronizing and deduplicating data. While useful, such services are very limited in scope and applicability. More particularly, such services are generally not able to discern or utilize data object content, classification, or structure, and therefore cannot perform logical integration of data objects for applications.
Other systems implement service functionality in a middleware or application tier, but service performance in such systems typically suffers from problems such as high latency of access to stored data and an excessive number of input-output (IO) operations. In addition, service integration and composition with other services is often hampered in systems of this type by the lack of a shared architecture, including profiles and directory and indexing capabilities. Moreover, service generation in the middleware or application tier context is often carried out using a proprietary intermediate language and suitable only for limited types of data structures, such as relational data.